Before a computer can simulate the behavior of a system, a model of that system must be built. In many cases, a system can be described by one or more constituent elements connected together so that outputs of one element become inputs of other elements. Each such system element can be characterized by a transfer function. Such a system is often represented as a block diagram in which each system element corresponds to one of the blocks in the block diagram.
Software intended for computer simulation of systems often provides a user-interface for enabling users to define blocks representative of the constituent elements of the system. At a purely abstract level, the definition of a particular block is no more than the definition of the transfer function of the system element that that block represents. However, at the implementation level, there are many computational details to consider.
For example, to optimize performance, a system designer must consider what data types (fixed or floating point, arrays or scalars) are to be used in representing input and output signals of the block. Having done so, a designer must consider the number of bits to use for each input and output and the scaling to be applied to map a sequence of bits into a number that represents some value in a range of values. Each input or output signal of a block can thus be thought of as having two different parts: a value, and a set of attributes for representing that value. Two such attributes, already described above, are data-type and scaling attributes.
In most cases, a user can easily make the value of a block's output signals (hereafter referred to as “outputs”) depend on the values of its input signals (hereafter referred to as “inputs”). This permits a change in an input's value to propagate automatically throughout the system. However, it is not so easy for a user to cause the attributes of a block's output to depend on the attributes of its inputs. As a result, in most cases, a change in an input attribute does not propagate automatically throughout the system.